package com.ophiux.utils.common;

import java.util.Calendar;

/**
 * 说明：身份证工具类<br>
 * <h1>创 建 人: hehailong<br>
 * </h1> 创建日期: 2018年10月17日 上午9:18:00<br>
 * 修改记录：
 */
public class IDCardUtil {
	
	/**
	 * 获取岁数
	 * @param idCard  身份证
	 * @return  String age
	 */
	public static String getAgeByIdCard(String idCard) {
		return getAge(idCard)+"";
	}
	
	/**
	 * 获取岁数
	 * @param idCard  身份证
	 * @return  int age
	 */
	public static int getAgeByIdCard2(String idCard) {
		return getAge(idCard);
	}
	
	public static int getAge(String idCard) {
		String birthTimeString = idCard.substring(6,10)+"-"+idCard.substring(10,12)+"-"+idCard.substring(12,14);
		
		// 先截取到字符串中的年、月、日
		String strs[] = birthTimeString.trim().split("-");
		int selectYear = Integer.parseInt(strs[0]);
		int selectMonth = Integer.parseInt(strs[1]);
		int selectDay = Integer.parseInt(strs[2]);
		// 得到当前时间的年、月、日
		Calendar cal = Calendar.getInstance();
		int yearNow = cal.get(Calendar.YEAR);
		int monthNow = cal.get(Calendar.MONTH) + 1;
		int dayNow = cal.get(Calendar.DATE);

		// 用当前年月日减去生日年月日
		int yearMinus = yearNow - selectYear - 1;
		int monthMinus = monthNow - selectMonth;
		int dayMinus = dayNow - selectDay;

		int age = yearMinus;
		if (yearMinus < 0) {// 选了未来的年份
			age = 0;
		} else if (yearMinus == 0) {// 同年的，要么为1，要么为0
			if (monthMinus < 0) {// 选了未来的月份
				age = 0;
			} else if (monthMinus == 0) {// 同月份的
				if (dayMinus < 0) {// 选了未来的日期
					age = 0;
				} else if (dayMinus >= 0) {
					age = 1;
				}
			} else if (monthMinus > 0) {
				age = 1;
			}
		} else if (yearMinus > 0) {
			if (monthMinus < 0) {// 当前月>生日月
			} else if (monthMinus == 0) {// 同月份的，再根据日期计算年龄
				if (dayMinus < 0) {
				} else if (dayMinus >= 0) {
					age = age + 1;
				}
			} else if (monthMinus > 0) {
				age = age + 1;
			}
		}
		return age;
	}
	
	
	public static void main(String[] args) {
		String age = IDCardUtil.getAgeByIdCard("500230199509083733");
		System.out.println(age);
	}
}
